home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1997 February
/
EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso
/
progs
/
editor
/
frexxed
/
fpl
/
comment.fpl
< prev
next >
Wrap
Text File
|
1995-07-18
|
4KB
|
130 lines
// $VER: Comment.FPL 2.1 (02.03.95) © Jesper Skov $
//»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» Comment Preference Interface ««
void export CommentPrefs()
{
PromptInfo(-1,"Comment preferences",-1,-1,
"comment_column",
"comment_end",
"comment_start",
"comment_start_skip",
"line_comment_body",
"line_comment_end",
"line_comment_start"
);
}
//»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» LineComment() ««
void export LineComment()
{
int width = ReadInfo("wall_right");
string comment = joinstr(" ",PromptString("","Enter line comment","")," ");
int col;
string output;
string body = ReadInfo("line_comment_body");
string start = ReadInfo("line_comment_start");
string end = ReadInfo("line_comment_end");
if ((strlen(comment)!=2) && (strlen(comment) < (width - strlen(start) - strlen(end)))){
if (width==0) // Fallback if no right_wall
width = 79;
output += ReadInfo("line_comment_start");
for (col = strlen(start); col < (width-strlen(end)-1-strlen(comment)); col++)
output = joinstr(output, body);
GotoLine(ReadInfo("line")); // on an empty line
output = joinstr(output, comment, ReadInfo("line_comment_end"));
if (1!=ReadInfo("line_length"))
output += "\n";
Output(output);
}
}
//»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» InsertComment() ««
void export InsertComment()
{
string tempString=GetLine();
GotoLine(ReadInfo("line"));
if (Search(ReadInfo("comment_start_skip"), "=f+w+", ReadInfo("line_length"))){
// Let's make a new comment!
string com=joinstr(ReadInfo("comment_start"), ReadInfo("comment_end"));
GotoLine(ReadInfo("line"), ReadInfo("line_length"));
Output(com);
CursorLeft(strlen(com));
}
// There is already a comment!
if (ReadInfo("comment_column")!=ReadInfo("column")){
// Wrong indent!
int i=ReadInfo("byte_position");
int cont=1;
if (1<strlen(tempString)){
while (i>0 && cont){
i--;
if (!Isspace(tempString[i]))
cont=0;
}
if (CursorLeft(ReadInfo("byte_position")-i-1))
DeleteWord();
}
IndentToCC(); // Get correct indention
}
CursorRight(strlen(ReplaceMatch(ReadInfo("comment_start_skip"), "\\&")));
}
//»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» IndentToCC ««
void IndentToCC()
{
int col = ReadInfo("comment_column") - ReadInfo("column");
int tab = ReadInfo("tab_size");
string out;
if (0 >= col)
out= " "; // simply insert one space
else {
if(ReadInfo("indent_uses_tabs")){
if ((ReadInfo("column")/tab+1)*tab <= ReadInfo("comment_column"))
Output("\t"); // First align to tabular column
col = ReadInfo("comment_column") - ReadInfo("column");
while(col>=tab){ // Then work by calculating
out += "\t";
col = col-tab;
}
}
while(col>0){
out += " ";
col--;
}
}
Output(out);
}
//»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» Menu ««
MenuAdd("s", "Comment...", "CommentPrefs();", "", 6,6,-1);
MenuBuild();
//»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» Key bindings ««
AssignKey("InsertComment();","amiga ;");
AssignKey("LineComment();","amiga :");
//»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»» Info variables ««
ConstructInfo("comment_column","","","WHLI","",1,999,45);
ConstructInfo("comment_start_skip","","","WHLS","",0,0,"//\\*+ ");
ConstructInfo("comment_start","","","WHLS","",0,0,"/* ");
ConstructInfo("comment_end","","","WHLS","",0,0," */");
ConstructInfo("line_comment_body","","","WHLS","",0,0,"»");
ConstructInfo("line_comment_end","","","WHLS","",0,0,"««");
ConstructInfo("line_comment_start","","","WHLS","",0,0,"//");
ConstructInfo("indent_uses_tabs","","","WLB","",0,1,1);
ConstructInfo("wall_right", "", "", "WIL", "", 0, 999, 79);